Version Packages - #1832
Merged
Merged
Conversation
Deploying with
|
| Status | Name | Latest Commit | Updated (UTC) |
|---|---|---|---|
| ✅ Deployment successful! View logs |
executor-cloud | 4e54b23 | Aug 30 2026, 12:05 AM |
Deploying with
|
| Status | Name | Latest Commit | Preview URL | Updated (UTC) |
|---|---|---|---|---|
| ✅ Deployment successful! View logs |
executor-marketing | 4e54b23 | Commit Preview URL Branch Preview URL |
Aug 30 2026, 12:03 AM |
Contributor
Cloudflare previewTorn down — the PR is closed. |
RhysSullivan
force-pushed
the
changeset-release/main
branch
2 times, most recently
from
August 28, 2026 21:07
8446a4d to
7b9029c
Compare
@executor-js/cli
@executor-js/config
@executor-js/execution
@executor-js/sdk
@executor-js/codemode-core
@executor-js/runtime-quickjs
@executor-js/plugin-file-secrets
@executor-js/plugin-graphql
@executor-js/plugin-keychain
@executor-js/plugin-mcp
@executor-js/plugin-onepassword
@executor-js/plugin-openapi
executor
commit: |
RhysSullivan
force-pushed
the
changeset-release/main
branch
16 times, most recently
from
August 29, 2026 23:41
159a153 to
4720370
Compare
RhysSullivan
force-pushed
the
changeset-release/main
branch
from
August 29, 2026 23:56
4720370 to
46fe769
Compare
RhysSullivan
force-pushed
the
changeset-release/main
branch
from
August 30, 2026 00:01
46fe769 to
4e54b23
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and publish to npm yourself or setup this action to publish automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.
Releases
@executor-js/cli@0.2.54
Patch Changes
ffcfbc0,10e16a5,515d6aa,06bf742]:@executor-js/config@1.6.4
Patch Changes
ffcfbc0,10e16a5,515d6aa,06bf742]:@executor-js/execution@1.6.4
Patch Changes
ffcfbc0,10e16a5,515d6aa,06bf742]:@executor-js/sdk@1.6.4
Patch Changes
#1858
ffcfbc0Thanks @RhysSullivan! - Add locally installed OpenAI Codex plugins as one-click integrations: Messages(iMessage/SMS), Chrome, Computer Use, Computer History, and OpenAI Developer
Docs. They appear in the connect dialog with their own icons, and a card that
cannot run yet says what to install and links to it.
Tool calls reach the plugins through
codex app-serverrather than a plugin'sown MCP server, because their services only honour calls from a Codex host
session. Computer Use and Chrome ship no MCP server at all, so their APIs are
projected as typed tools —
list_apps,click,read_page,navigate— thatcompile to a single call each. No model turn is involved; nothing is bundled or
downloaded, and a machine without Codex simply sees the setup steps.
A plugin's own approval prompt now reaches the caller, and states the terms it
carries: a browser prompt that persists for a site says so. Approvals are asked
once per session rather than per call.
Elicitation requests can carry implementation-defined metadata through
FormElicitation/UrlElicitation, and a paused execution reports it. Bothfields are optional and additive.
#1346
10e16a5Thanks @RhysSullivan! - Creating a connection over an existing one is rejected instead of silently overwriting itconnections.createused to upsert: a create with the same (owner, integration, name) replaced the saved connection and, for a pasted value, overwrote the stored secret itself. It now fails with the newConnectionAlreadyExistsErrorand leaves the existing connection untouched. Remove the connection first, or pick a different name.This adds one error to the wire contract: the
POST /connectionsendpoint can answer HTTP 409 with tagConnectionAlreadyExistsError, and theconnections.createcore tool resolves the same case as{ ok: false, error: { code: "connection_already_exists" } }. The core tool now also resolves the other expected input failures the same way instead of as opaque internal errors:integration_not_foundfor an unknown integration andinvalid_connection_inputfor an invalid input. The change is additive — no existing status, field, or success shape moves.OAuth is unaffected. Fresh OAuth connects already resolve a taken name to the next free suffix through
newConnection, and reconnect still re-mints the same connection on purpose.#1708
515d6aaThanks @RhysSullivan! - Stale "unhealthy" verdicts no longer wait for a manual "Check now"A connection's persisted health verdict was only ever re-checked from the web UI, so after one bad probe (a transient upstream error, a refresh that failed once) agents reading
connections.listkept reporting "unhealthy, reconnect" for a connection that worked fine — invocation auto-refreshes OAuth tokens — until a human opened the page and clicked "Check now".Two repair paths make the verdict track reality on its own. The agent-facing
connections.listnow re-runs the same probe as "Check now" before reporting a non-healthy verdict older than a minute, so recovery shows on the next read while repeated lists collapse to one probe per window. And a successful tool invocation through a connection wearing a non-healthy verdict flips it back to healthy — real traffic is stronger evidence than any probe. Tool-sync failure verdicts and grants the authorization server has rejected asinvalid_grantare deliberately left alone: the first is cleared only by a successful sync, and the second genuinely requires a reconnect. A call whose credential no longer resolves is left alone too — a rendered request omits the missing placement, so an upstream that answers unauthenticated proves nothing about a credential that is gone.PluginCtx.connectionsgainscheckHealth, the same probe-with-freshness-window the executor surface already exposed.#1818
06bf742Thanks @ramarivera! - Rejected MCP OAuth grants now request reconnect without registering a disposable clientRemote MCP catalog discovery used the MCP SDK's interactive OAuth fallback when an upstream rejected Executor's stored bearer with
401. A background refresh cannot finish that browser authorization, but the SDK first fetched OAuth metadata and dynamically registered another client. Executor then preserved the old catalog under a generic degraded health verdict, so clients saw zero or stale tools without a reliable reconnect signal.Executor now stops at the authenticated HTTP boundary for OAuth-backed MCP transports. A rejected stored bearer becomes a structured reauthorization result before OAuth discovery or Dynamic Client Registration runs. Catalog refresh still preserves the last authoritative tools, but records the connection as expired with a reconnect-required detail so the UI and API can direct the user through authorization again.
API-key and unauthenticated MCP transports keep their existing
401behavior, and ordinary incomplete discovery results remain degraded.@executor-js/vite-plugin@0.0.64
Patch Changes
ffcfbc0,10e16a5,515d6aa,06bf742]:@executor-js/runtime-quickjs@1.6.4
Patch Changes
@executor-js/plugin-desktop-settings@1.6.4
Patch Changes
ffcfbc0,10e16a5,515d6aa,06bf742]:@executor-js/plugin-example@1.6.4
Patch Changes
ffcfbc0,10e16a5,515d6aa,06bf742]:@executor-js/plugin-file-secrets@1.6.4
Patch Changes
#1838
939b96fThanks @RhysSullivan! - Import plugin-authoring symbols from@executor-js/sdk/coreinstead of the package root. The published root is the Promise surface and does not exportStorageError,definePlugin,PluginCtx, orPlugin, so both packages failed to load when installed from npm.Updated dependencies [
ffcfbc0,10e16a5,515d6aa,06bf742]:@executor-js/plugin-graphql@1.6.4
Patch Changes
ffcfbc0,10e16a5,9dcfaa5,515d6aa,06bf742]:@executor-js/plugin-keychain@1.6.4
Patch Changes
#1838
939b96fThanks @RhysSullivan! - Import plugin-authoring symbols from@executor-js/sdk/coreinstead of the package root. The published root is the Promise surface and does not exportStorageError,definePlugin,PluginCtx, orPlugin, so both packages failed to load when installed from npm.Updated dependencies [
ffcfbc0,10e16a5,515d6aa,06bf742]:@executor-js/plugin-mcp@1.6.4
Patch Changes
#1858
ffcfbc0Thanks @RhysSullivan! - Add locally installed OpenAI Codex plugins as one-click integrations: Messages(iMessage/SMS), Chrome, Computer Use, Computer History, and OpenAI Developer
Docs. They appear in the connect dialog with their own icons, and a card that
cannot run yet says what to install and links to it.
Tool calls reach the plugins through
codex app-serverrather than a plugin'sown MCP server, because their services only honour calls from a Codex host
session. Computer Use and Chrome ship no MCP server at all, so their APIs are
projected as typed tools —
list_apps,click,read_page,navigate— thatcompile to a single call each. No model turn is involved; nothing is bundled or
downloaded, and a machine without Codex simply sees the setup steps.
A plugin's own approval prompt now reaches the caller, and states the terms it
carries: a browser prompt that persists for a site says so. Approvals are asked
once per session rather than per call.
Elicitation requests can carry implementation-defined metadata through
FormElicitation/UrlElicitation, and a paused execution reports it. Bothfields are optional and additive.
#1818
06bf742Thanks @ramarivera! - Rejected MCP OAuth grants now request reconnect without registering a disposable clientRemote MCP catalog discovery used the MCP SDK's interactive OAuth fallback when an upstream rejected Executor's stored bearer with
401. A background refresh cannot finish that browser authorization, but the SDK first fetched OAuth metadata and dynamically registered another client. Executor then preserved the old catalog under a generic degraded health verdict, so clients saw zero or stale tools without a reliable reconnect signal.Executor now stops at the authenticated HTTP boundary for OAuth-backed MCP transports. A rejected stored bearer becomes a structured reauthorization result before OAuth discovery or Dynamic Client Registration runs. Catalog refresh still preserves the last authoritative tools, but records the connection as expired with a reconnect-required detail so the UI and API can direct the user through authorization again.
API-key and unauthenticated MCP transports keep their existing
401behavior, and ordinary incomplete discovery results remain degraded.Updated dependencies [
ffcfbc0,10e16a5,9dcfaa5,515d6aa,06bf742]:@executor-js/plugin-onepassword@1.6.4
Patch Changes
#1860
2cad774Thanks @RhysSullivan! - 1Password-backed connections no longer pay a 1Password read on every tool callEach tool call resolves its connection's credential, and for 1Password-backed connections every resolution shelled out to the
opCLI — roughly a second per call under desktop-app auth, multiplying the latency of every call several times over. The spawn was also synchronous, so one slow resolution (for exampleopwaiting on a 1Password approval prompt) blocked the whole local server for every other request, with no timeout on that path.Three changes:
secretCacheTtlMs). The cache keys by a fingerprint of the provider config, so editing or removing an account drops all cached secrets at once; not-found, ambiguity, and failure outcomes are never retained. Concurrent resolutions of the same ref share one backend read even with the TTL set to0.opCLI now runs as an asynchronous spawn with a hard deadline (the plugin's existingtimeoutMs), so a stuckopfails with the troubleshooting message instead of freezing the server. Auth reaches the child per spawn (service-account token via the environment, desktop account via--account) instead of through the previous backend's process-global token state.Updated dependencies [
ffcfbc0,10e16a5,9dcfaa5,515d6aa,06bf742]:@executor-js/plugin-openapi@1.6.4
Patch Changes
ffcfbc0,10e16a5,9dcfaa5,515d6aa,06bf742]:@executor-js/plugin-toolkits@1.5.39
Patch Changes
ffcfbc0,10e16a5,9dcfaa5,515d6aa,06bf742]:@executor-js/codemode-core@1.6.4
executor@1.6.4
Patch Changes
#1858
ffcfbc0Thanks @RhysSullivan! - Add locally installed OpenAI Codex plugins as one-click integrations: Messages(iMessage/SMS), Chrome, Computer Use, Computer History, and OpenAI Developer
Docs. They appear in the connect dialog with their own icons, and a card that
cannot run yet says what to install and links to it.
Tool calls reach the plugins through
codex app-serverrather than a plugin'sown MCP server, because their services only honour calls from a Codex host
session. Computer Use and Chrome ship no MCP server at all, so their APIs are
projected as typed tools —
list_apps,click,read_page,navigate— thatcompile to a single call each. No model turn is involved; nothing is bundled or
downloaded, and a machine without Codex simply sees the setup steps.
A plugin's own approval prompt now reaches the caller, and states the terms it
carries: a browser prompt that persists for a site says so. Approvals are asked
once per session rather than per call.
Elicitation requests can carry implementation-defined metadata through
FormElicitation/UrlElicitation, and a paused execution reports it. Bothfields are optional and additive.
#1477
c0c7a0dThanks @RhysSullivan! - Stop exporting credential-bearing URLs in telemetry. Every query parametervalue, URL fragment, and userinfo component is stripped from exported span
URLs — no parameter name is trusted — on every exporter path: the cloud span
processors, the self-host OTLP exporter, the browser client's OTLP exporter,
and the forwarded browser trace batches. User-supplied MCP endpoints are
sanitized before being stamped onto spans.
#1841
d13151aThanks @RhysSullivan! - 1Password: multiple named accounts. The provider now holds any number of named accounts — a work account next to a personal one, or a service-account token next to desktop-app biometrics — each scoping its own set of vaults. The settings card lists every account with independent edit and disconnect, existing single-account configs upgrade in place, andop://refs keep their vault-first addressing: a vault name that exists in more than one account is an explicit ambiguity error, never a silent pick.Updated dependencies [
ffcfbc0,10e16a5,515d6aa,06bf742]:@executor-js/cloud@1.4.65
Patch Changes
ffcfbc0,10e16a5,9dcfaa5,515d6aa,06bf742]:@executor-js/host-selfhost@0.0.46
Patch Changes
ffcfbc0,10e16a5,9dcfaa5,515d6aa,06bf742]:@executor-js/local@1.6.4
Patch Changes
ffcfbc0,10e16a5,9dcfaa5,939b96f,515d6aa,06bf742,2cad774]:@executor-js/e2e@0.0.44
Patch Changes
ffcfbc0,10e16a5,515d6aa,06bf742]:@executor-js/example-all-plugins@0.0.65
Patch Changes
ffcfbc0,10e16a5,939b96f,515d6aa,06bf742,2cad774]:@executor-js/example-docs-sdk-quickstart@0.0.50
Patch Changes
ffcfbc0,10e16a5,515d6aa,06bf742]:@executor-js/analytics@0.1.11
Patch Changes
@executor-js/api@1.4.67
Patch Changes
ffcfbc0,10e16a5,515d6aa,06bf742]:@executor-js/cloudflare@0.0.46
Patch Changes
ffcfbc0,10e16a5,515d6aa,06bf742]:@executor-js/mcp-apps-shell@1.4.15
Patch Changes
9dcfaa5]:@executor-js/runtime-workerd-subprocess@0.0.19
Patch Changes
@executor-js/plugin-encrypted-secrets@0.0.46
Patch Changes
ffcfbc0,10e16a5,515d6aa,06bf742]:@executor-js/plugin-provider-service-split@0.0.18
Patch Changes
ffcfbc0,10e16a5,515d6aa,06bf742]:@executor-js/react@1.4.67
Patch Changes
#1559
9dcfaa5Thanks @Adityakk9031! - Reconnecting a DCR connection now re-registers instead of reusing a stranded clientA dynamically registered OAuth client is bound to the redirect URI it registered with. Once the app's callback origin changed (127.0.0.1 to localhost), Reconnect still started the flow against the stored client, and the authorization server rejected it — leaving no way to repair the connection.
Reconnect now takes the same probe → CIMD-or-register → start route as the initial connect, so the registration gateway replaces the stranded client against the current redirect URI. Methods with a fixed, hand-registered app are unaffected and keep using their stored client.
Updated dependencies [
ffcfbc0,10e16a5,515d6aa,06bf742]:@executor-js/desktop@1.6.4